package thread;

// 使用标准库中自带的标志位

public class Demo5 {
    public static void main(String[] args) {
        Thread t = new Thread(() -> {
            while (!Thread.currentThread().isInterrupted()) {
                // currentThread() 是Thread类的静态方法，通过这个方法就可以拿到当前线程的实例（拿到当前线程对应的Thread对象）
                // isInterrupted() 判断该线程是否中断，也就是判定标志位
                System.out.println("hello thread");
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();

                    // [方式一] 立即结束线程
                    break;  // 异常唤醒sleep后要想结束就加一个break

                    // [方式二] 啥都不做，不理会，线程继续执行

                    // [方式三] 线程稍后处理
                    //Thread.sleep(1000);
                    //break;
                }
            }
            System.out.println("t线程执行完了");
        });

        t.start();

        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        t.interrupt(); // 在主线程中来设置中断标志位，也就是设置中断标志位为true
        System.out.println("设置中断标志 让线程t结束！");

        // 报了异常之后 又继续运行输出

    }
}
